A scheduler in a computing environment allows for a plurality of processes to be run in a predetermined order and/or concurrently. The scheduler may determine a sequence at which the processes run so that each process is allowed access to a processor at a particular time. In a first use, the scheduler may allow for a single process to complete prior to any other process, such as when the scheduler includes priority data regarding the various processes to be run. In a second use, the scheduler may allow for a process to be run for a predetermined amount of time at which point a further process is allowed to run for a further predetermined amount of time.
The conventional scheduler does not provide a way for a process to release its execution time to another process within its fixed time window. This may result in process synchronization and message passing being a relatively slow affair. Client processes are required to wait for their respective time window to end while server processes must wait for their respective time window to begin before messages may be sent and received. This results in wasting execution time and reducing performance. There may be potential waste within a time slice for a first process that does not require the entire, allotted time when a second process could benefit from use of the unneeded time of the first process.